package com.atguigu1.core.action

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}


/**
 *
 * @description: 行动算子案例
 * @time: 2021-03-12 11:45
 * @author: baojinlong
 **/
object Spark07Foreach {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("rdd")
    // 设置rdd分区数字
    val sparkContext = new SparkContext(conf)
    val rddValue: RDD[(Int, Int, Int, Int)] = sparkContext.makeRDD(Seq((1, 2, 3, 4)), numSlices = 2)
    // 其实是Driver端执行的
    rddValue.collect.foreach(println)
    // foreach是在Executor端内存数据打印分布式打印,
    //为什么叫算子,Rdd方法和scala集合对象方法不一样,集合对象都是在同一个节点执行的,而rdd方法可以将计算逻辑发送到分布式节点Executor执行的
    // rdd的方法外部的操作都是在Driver端执行的,而方法内部的逻辑代码都是在Executor执行的.
    //
    rddValue.foreach(println)
    sparkContext.stop()
  }
}
